Proving the Correctness of Regula Deterministic Programs: a Unifying S Using Dynamic Logic
نویسندگان
چکیده
The simple set WL of deterministic while programs is defined iand a number of known methods for proving the correctness of these programs are surveyed. Emphasis is placed on the tradeoff existing between data-directed and syntax-directed methods, and on providing, especially for the latter, a uniform description enabling comparison and assessment. Among the works considered are the Floyd/Hoare invariant assertion method for partial correctness, Floyd’s well-founded sets method for termination, Dijkstra’s notion of weakest precondition, the Burstall/Manna and Waldinger intermittent assertion method and more. Also, a brief comparison is carried out between three logics of programs: dynamic logic, algorithmic logic and programming logic.
منابع مشابه
Automatic Verification of Programs with Indirection
In the first part we prove the correctness of an existing verification algorithm, namely counterexample-driven abstraction refinement. To be able to state the correctness of the algorithm, we modify it such that it verifies programs that have a formal semantics. We use propositional dynamic logic and we give a denotational semantics and an equivalent structural operational semantics. Then we co...
متن کاملProving Non-Deterministic Computations in Agda
We investigate proving properties of Curry programs using Agda. First, we address the functional correctness of Curry functions that, apart from some syntactic and semantic differences, are in the intersection of the two languages. Second, we use Agda to model non-deterministic functions with two distinct and competitive approaches incorporating the non-determinism. The first approach eliminate...
متن کاملl!soMEr~ME!l IS so&fETIMEs IINOT NEv~Rll On the Temporal Logic of Programs
1. INTRODUCTION Pnueli [15] has recently introduced the idea of using temporal logic [ 18] as the logical basis for proving correctness properties of' concurrent programs. This has permitted an elegant unifying formulation of previous proof methods. In this paper, we attempt to clarify the logical foundations of the application of temporal logic to concurrent programs. In doing so, we will also...
متن کاملProving Programs Incorrect Using a Sequent Calculus for Java Dynamic Logic
Program verification is concerned with proving that a program is correct and adheres to a given specification. Testing a program, in contrast, means to search for a witness that the program is incorrect. In the present paper, we use a program logic for Java to prove the incorrectness of programs. We show that this approach, carried out in a sequent calculus for dynamic logic, creates a connecti...
متن کاملProving Correctness of Logically Decorated Graph Rewriting Systems
We first introduce the notion of logically decorated rewriting systems where the left-hand sides are endowed with logical formulas which help to express positive as well as negative application conditions, in addition to classical pattern-matching. These systems are defined using graph structures and an extension of combinatory propositional dynamic logic, CPDL, with restricted universal progra...
متن کامل